The terminology below will be used in the present description as well as in the claims.
An “IT system” is a system designed to execute computer program instructions and to this end comprises at least one central processing unit, also called a processor or CPU (Central Processing Unit). In order of increasing complexity, an IT system according to the invention may consist of a simple microcomputer comprising one or more microprocessors with one or more computing cores, or a more complex assembly in which a plurality of microcomputers are interconnected via a data transmission network. The complexity of an IT system in which the invention can be implemented is dependent primarily on the intended use.
A “microprocessor” is a processor implemented on a very limited number of integrated circuits, generally only one. Because microprocessors are so popular, they are generally simply called processors or CPUs.
It should be noted that a processor may comprise one or more computing cores. A “single-core processor” is thus a processor (microprocessor) including a single computing core, and a “multi-core processor” is a processor (microprocessor) including a plurality of computing cores that share certain elements in common, generally a cache memory, for example the so-called level 2 (L2) cache.
A computing core is the part of the processor (microprocessor) performing the computations corresponding to the executed instructions. A computing core generally includes one or more control units as well as one or more integer computing units and one or more floating-point computing units.
A “computer program”, or more simply a “program”, is a set of instructions intended to be executed by a processor.
A “process” is a program being executed. A process may comprise only one instruction thread (the process is then sometimes called a “heavy process”), or comprise multiple instruction threads (said threads sometimes called “lightweight processes”) sharing common resources, generally memory, and capable of being executed asynchronously.
An “instruction thread” (or thread) is a series of instructions that a computing core executes one after another.
A “BIOS” (Basic Input Output System) is a program launched at the beginning of the start-up of an IT system, before the operating system is launched.
An “operating system” is a program executed on an IT system and producing the interface between the IT system and other programs executed on this IT system, generally “application programs”, i.e. programs intended to be controlled by a user and generally intended to be launched by the latter.
A “daemon” is a process intended to be executed in the background, i.e. that is not under the direct control of the user. Daemons are often launched by the operating system.
By contrast with daemons, an “application process” is an application program being executed.
A “shell” is a program providing an interface for the user for accessing services offered by the operating system.
A “script” is an interpreted program, i.e. including instructions interpreted by another program that converts them into instructions for the processor.
A “shell-script” is therefore a script comprising instructions intended to be interpreted by a shell.
A “logic processor” is a processor seen by the operating system. Thus, a processor that is physically present appears in the form of one or more logic processors to the operating system according to its architecture and/or its configuration. In particular, a single-core processor in single-threading mode capable of processing a single instruction thread at a time appears as a single logic processor, and a multi-core processor in which each core is capable of processing a single thread of instructions at a time appears in the form of as many logic processors as there are cores.
There are currently processors, single-core or multi-core, in which each computing core implements SMT technology so as to be capable of executing at least two instruction threads at a time in an interlaced manner.
For example, the Intel company sells processors capable of operating selectively in “hyper-threading” mode, in which each computing core is capable of executing two instruction threads at a time in an interlaced manner, or in “single-threading” mode, in which each computing core is capable of executing only one instruction thread at a time.
In addition, most modern operating systems are designed to manage a plurality of logic processors and are therefore capable of providing instruction threads to each computing core physically present.
To enable such an operating system to take advantage of the hyper-threading mode without requiring it to be modified, each core in hyper-threading mode appears in the form of two logic processors to the operating system. The latter can therefore provide two processes to each computing core in hyper-threading mode by using its usual mechanisms for managing the logic processors.
Some programs are designed to take advantage of the hyper-threading mode: this is the case in particular of programs producing, during their execution, a multi-programmed process including two instruction threads that use different resources of a computing core.
It has been observed that certain programs have optimal performance in one mode, but degraded performance in the other mode.
It would thus be desirable to adapt the mode of operation—single-threading or hyper-threading or more generally SMT—of the processor computing cores according to the type of program to be executed.
However, at present, the only means known for going from one mode to the other is to modify a parameter of the BIOS. This requires a first restart of the IT system in order to access the BIOS in order to configure it, and a second restart so that the BIOS thus configured is executed. There are IT tools enabling the BIOS parameters to be modified under the control of the IT system. However, the second restart of the system remains necessary. Thus, these solutions involve a significant loss of time and are, in practice, too cumbersome to be useful.
It may thus be desirable to provide a method for configuring an IT system that enables at least some of the aforementioned problems and constraints to be overcome.